package db;

import java.sql.*;

public class DB {
	private Connection conn = null;
	ResultSet rs = null;
	Statement stmt = null;
	PreparedStatement ps = null;
	DBConnection db = new DBConnection();

	/**
	 * 构造函数，连接数据库
	 * 
	 */
	public DB() {
		this.conn = db.getConnection();

	}

	public Connection getConn() {//返回数据库连接
		return this.conn;
	}

	/**
	 * 执行查询语句
	 * //执行查询语句,返回一个结果集
	 * @param sql
	 * @return
	 */

	public ResultSet execSelect(String sql) {//传递查询语句参数

		try {//判断当前是否打开Connection
		 if(conn!=null){//如果打开了连接
			stmt = conn.createStatement( //创建一个Statement 对象
					ResultSet.TYPE_SCROLL_INSENSITIVE,
					ResultSet.CONCUR_READ_ONLY);
			if(stmt!=null){ //如果创建Statement对象成功
			  rs = stmt.executeQuery(sql);//执行查询语句并返回结果集
			}
		  }
		} catch (SQLException se) {          
            System.out.print(se.getMessage());//如果抛出异常,打印异常信息
		}
		return rs;//返回结果集
	}

	/**
	 * 执行修改语句
	 * 
	 * @param sql
	 * @return String success表示操作成功,error表示失败
	 */

	public String execUpdate(String sql) {//传递增加、修改或删除语句参数
		Statement stmt = null;
		String flag = "";//定义一个字符串用于标识语句是否执行成功
		try {
			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
					ResultSet.CONCUR_UPDATABLE);//创建一个Statement 对象
			if(stmt!=null)//如果创建Statement对象成功
			{
				stmt.executeUpdate(sql);//执行操作(增、修、删)语句
			    flag = "success";//执行了语句说明操作成功
			}
		} catch (SQLException se) {
			System.out.print(se.getMessage());//如果抛出异常,打印异常信息

			flag = "error";//操作失败
		}

		return flag;//返回标记
	}

	/**
	 * 执行数据库备份与还原语句
	 */

	public String exec(String sql) {
		Statement stmt = null;
		String flag = "";
		try {
			stmt = conn.createStatement();
			stmt.execute(sql);
			flag = "success";
		} catch (SQLException se) {
			System.out.print(se.getMessage());

			flag = "error";
		}
		return flag;
	}

	/**
	 * 关闭conn
	 */

	public void setConnClose() {
		try {

			conn.close();
			conn=null;
		} catch (Exception e) {
		}
	}

	/**
	 * 以下是Tomcat5.0服务器关闭的方法
	 */

	public void freeCon() {
		try {
			 //判断ResultSet对象是否为空
			if (rs != null){//如果ResultSet对象不为空
				rs.close();//关闭结果集
			    rs=null;//将ResultSet对象置为空
			}

			//判断Preparedstatement对象是否为空
			if (ps != null)//如果Preparedstatement对象不为空
			{
				ps.close();
			    ps=null;//将Preparedstatement对象置为空
			}

			//判断Statement对象是否为空
			if (stmt != null)//如果Statement对象不为空
			{
				stmt.close();
				stmt=null;//将Statement对象置为空
			}

			//判断Connection对象是否为空
			if (conn != null)//如果Connection对象不为空
			{
				conn.close();
			   conn=null;//将Connection对象置为空
			 }
		} catch (SQLException ex) {
		}
	}

	// 测试

	  public static void main(String args[])
	  {
		   DB db=new DB();
		   System.out.print(db.getConn());
		    
	  }
	
	

}
